جزوه · فصل چهارم · جلسه ۴۱ · فشرده‌سازی در لینوکس ← بازگشت به فهرست
📘 فصل چهارم · جلسه ۴۱ فشرده‌سازی در لینوکس
📅 تاریخ: سه‌شنبه، ۲۷ مرداد ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian (کالی) · 📦 Red Hat

▍ مقدمه

فشرده‌سازی فایل‌ها یکی از مهارت‌های ضروری در لینوکس است. با فشرده‌سازی، حجم فایل‌ها کاهش می‌یابد و در نتیجه فضای دیسک ذخیره می‌شود و انتقال فایل‌ها از طریق شبکه سریع‌تر انجام می‌شود. در لینوکس، ابزارهای مختلفی برای فشرده‌سازی وجود دارند که هر کدام ویژگی‌های خاص خود را دارند.

🔑 ابزارهای اصلی فشرده‌سازی در لینوکس:
  • gzip → قدیمی و پرکاربرد
  • bzip2 → نسبت فشرده‌سازی بهتر از gzip
  • xz → بهترین نسبت فشرده‌سازی
  • zip → سازگار با ویندوز

▍ مقایسه ابزارهای فشرده‌سازی

برای مقایسه، یک فایل نمونه (wtmp) را با هر چهار ابزار فشرده‌سازی می‌کنیم و حجم نتیجه را بررسی می‌کنیم.

┌──(ya3in㉿kali)-[~] └─$ cp /var/log/wtmp wtmp └─$ cp wtmp wtmp1; cp wtmp wtmp2; cp wtmp wtmp3; cp wtmp wtmp4 └─$ ls -lh wtmp? -rw-r--r--. 1 root root 210K Oct 9 19:54 wtmp1 -rw-r--r--. 1 root root 210K Oct 9 19:54 wtmp2 -rw-r--r--. 1 root root 210K Oct 9 19:54 wtmp3 -rw-r--r--. 1 root root 210K Oct 9 19:54 wtmp4

📦 gzip

┌──(ya3in㉿kali)-[~] └─$ gzip wtmp1

حجم نهایی: 7.7K

  • سریع‌ترین
  • پسوند: .gz
  • مناسب برای فایل‌های روزمره

📦 bzip2

┌──(ya3in㉿kali)-[~] └─$ bzip2 wtmp2

حجم نهایی: 6.2K

  • نسبت فشرده‌سازی بهتر از gzip
  • پسوند: .bz2
  • کندتر از gzip

📦 xz

┌──(ya3in㉿kali)-[~] └─$ xz wtmp3

حجم نهایی: 5.2K

  • بهترین نسبت فشرده‌سازی
  • پسوند: .xz
  • کندترین

📦 zip

┌──(ya3in㉿kali)-[~] └─$ zip wtmp4.zip wtmp4 adding: wtmp4 (deflated 96%)

حجم نهایی: 7.9K

  • سازگار با ویندوز
  • پسوند: .zip
  • قابلیت آرشیو چند فایل
┌──(ya3in㉿kali)-[~] └─$ ls -lh wtmp?.* -rw-r--r--. 1 root root 7.7K Oct 9 19:54 wtmp1.gz -rw-r--r--. 1 root root 6.2K Oct 9 19:54 wtmp2.bz2 -rw-r--r--. 1 root root 5.2K Oct 9 19:54 wtmp3.xz -rw-r--r--. 1 root root 7.9K Oct 9 19:55 wtmp4.zip
🏆 بهترین ابزار فشرده‌سازی کدام است؟

اگر نسبت فشرده‌سازی برای شما مهم است (یعنی می‌خواهید کوچک‌ترین حجم ممکن را داشته باشید)، xz بهترین گزینه است.

اگر سرعت برای شما مهم است، gzip سریع‌ترین گزینه است.

اگر می‌خواهید فایل‌ها را با ویندوز به اشتراک بگذارید، از zip استفاده کنید.

bzip2 یک گزینه میانی بین سرعت و نسبت فشرده‌سازی است.

▍ دستورات فشرده‌سازی و باز کردن

ابزار فشرده‌سازی باز کردن پسوند
gzip gzip file gunzip file.gz .gz
bzip2 bzip2 file bunzip2 file.bz2 .bz2
xz xz file unxz file.xz .xz
zip zip archive.zip file unzip archive.zip .zip

▍ نمایش محتوای فایل‌های فشرده بدون باز کردن

گاهی اوقات می‌خواهید محتوای یک فایل فشرده را بدون اینکه آن را باز کنید، مشاهده کنید. ابزارهای زیر این کار را انجام می‌دهند:

ابزار معادل توضیح
zcat gunzip -c نمایش محتوای فایل‌های .gz (gzip)
bzcat bzip2 -dc نمایش محتوای فایل‌های .bz2 (bzip2)
xzcat xz --decompress --stdout نمایش محتوای فایل‌های .xz (xz)
💡 نکته مهم:

zcat فقط فایل‌های gzip (پسوند .gz) را نمایش می‌دهد و با فایل‌های zip کار نمی‌کند.

• مثال‌های عملی

┌──(ya3in㉿kali)-[~] └─$ zcat wtmp1.gz | head

توضیح: نمایش ۱۰ خط اول از فایل wtmp1.gz بدون نیاز به باز کردن آن.

┌──(ya3in㉿kali)-[~] └─$ bzcat wtmp2.bz2 | grep "root"

توضیح: جستجوی کلمه root در فایل wtmp2.bz2 بدون باز کردن آن.

▍ خلاصه و جمع‌بندی

✅ تمرین پیشنهادی:
  • یک فایل متنی بزرگ بسازید (مثلاً با dd یا کپی کردن یک فایل لاگ).
  • آن را با هر چهار روش فشرده‌سازی کنید و حجم نهایی را مقایسه کنید.
  • با time زمان هر فشرده‌سازی را اندازه بگیرید.
  • با zcat، bzcat و xzcat محتوای فایل‌های فشرده را بدون باز کردن مشاهده کنید.